]> dgit.raspbian.org Git - libde265.git/log
libde265.git
6 weeks agoheap-use-after-free in decoder_context::reset() via dangling previous_slice_header
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
heap-use-after-free in decoder_context::reset() via dangling previous_slice_header

Origin: https://github.com/strukturag/libde265/commit/07bc500d45f781a7e2915afb7eebc2d6d9a541c9
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-mm7m-v26f-wf8x

The issue does not have yet an CVE number assigned.
From 07bc500d45f781a7e2915afb7eebc2d6d9a541c9 Mon Sep 17 00:00:00 2001
From: Dirk Farin <dirk.farin@gmail.com>
Date: Wed, 2 Sep 2026 23:55:01 +0200
Subject: [PATCH] Fix heap-use-after-free in decoder_context::reset()
 (GHSA-mm7m-v26f-wf8x)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

decoder_context::reset() calls dpb.clear() which frees all de265_image objects
and their owned slice_segment_header structs. However, reset() never nulls the
previous_slice_header pointer, leaving a dangling reference into freed memory.

When the next NAL unit after reset() is a dependent slice, slice_segment_header::read()
at slice.cc:435 executes:
  *this = *ctx->previous_slice_header;

This copies from freed 1464-byte struct â€” heap-use-after-free (CWE-416).

The in-stream case was already guarded by commit 12ba88ec (decctx.cc:556 nulls
previous_slice_header on first slice of new picture). This fix applies the same
invariant to the reset() path: only a slice header still retained by a live image
may remain as previous_slice_header.

Gbp-Pq: Name TEMP-0000000-E66AA0.patch

6 weeks agoDouble Free / Use after Free
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
Double Free / Use after Free

Origin: https://github.com/strukturag/libde265/commit/eb346780796055d9f9aac62d725d3170aa60c7b4
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-xp3h-6f5r-8cxp
Comment: As the version in bookworm does not have StatCoeff_models, those
 patch parts have been omitted.

Concurrent Execution using Shared Resource with Imprope
Synchronization ('Race Condition') and Use After Free and Double Free in
libde265.
There is no CVE assigned yet.
From eb346780796055d9f9aac62d725d3170aa60c7b4 Mon Sep 17 00:00:00 2001
From: Dirk Farin <dirk.farin@gmail.com>
Date: Wed, 2 Sep 2026 20:09:20 +0200
Subject: [PATCH] Fix WPP CABAC context handoff race (GHSA-xp3h-6f5r-8cxp)

In WPP-threaded decoding, each CTB row task hands its saved CABAC
context (imgunit->ctx_models[row]) to the row below through
context_model_table, a hand-rolled refcounted handle whose model and
refcnt pointers are mutated together by copy, assignment, release(),
and decouple(). The producer/consumer handoff relied on
wait_for_progress()/set_progress() to order the accesses, but that
lock's fast path read a plain non-atomic int with no acquire/release
barrier, so writes to a row slot were not reliably published across
threads. Under a crafted stream this let two tasks touch the same
slot's ownership metadata concurrently, corrupting it and causing
heap-use-after-free / double-free (confirmed via AddressSanitizer,
reproducing the double-free in context_model_table::release() at
the exact reported sites).

Add a mutex to image_unit guarding the whole copy/release (consumer)
and assign/decouple (producer) sequence for a row slot, so ownership
transitions are mutually exclusive. Also make de265_progress_lock's
progress counter atomic with acquire/release ordering, closing the
underlying missing-barrier gap that the same fast path exposes to
every other wait_for_progress() consumer (deblocking, SAO, motion
readiness).

Verified: unpatched build reliably double-frees under ASan within a
few hundred fuzzer iterations; the fixed build stayed clean across
thousands of iterations of the same reproducers. Decode output is
unchanged (girlshy.h265 hash matches single- and multi-threaded).

Gbp-Pq: Name TEMP-0000000-BB5891.patch

6 weeks agoCVE-2026-54240, CVE-2026-54241: fix pixel-accessor integer overflow
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-54240, CVE-2026-54241: fix pixel-accessor integer overflow

Origin: upstream, https://github.com/strukturag/libde265/commit/bdca87569b9c63c2a7054d90ae4462dbb78d159a
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-ccfw-29x7-rrx3
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-j2qq-x2xq-g9wr
Applied-Upstream: 1.1.1

The image pixel accessors computed xpos + ypos*stride in signed 32-bit
arithmetic; frames with width*height > INT32_MAX wrap the offset and the
returned pointer lands far outside the buffer (OOB read/write). Widen
stride/offset math to 64 bits and store validated SPS dimensions in
uint16_t.

Gbp-Pq: Name CVE-2026-54240_CVE-2026-54241.patch

6 weeks agoCVE-2026-49346: fix integer overflow in image plane allocation size
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-49346: fix integer overflow in image plane allocation size

Origin: upstream, https://github.com/strukturag/libde265/commit/8a1b5cf212f78e1c77cb46eb5d56e492a9336eb8
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-vv8h-932h-7r86
Bug-Debian: https://bugs.debian.org/1140431
Applied-Upstream: 1.1.0

Large SPS dimensions with 16-bit bit depth overflow the 32-bit allocation
size in de265_image_get_buffer(); the wrapped ~1 KB allocation is later
written with the full plane size, corrupting the heap.

Gbp-Pq: Name CVE-2026-49346.patch

6 weeks agoCVE-2026-49337: free orphaned slice header when no active image unit
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-49337: free orphaned slice header when no active image unit

Origin: upstream, https://github.com/strukturag/libde265/commit/683cb9fa603e35840642f98765ab95cdb71cadf9
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-g5hj-rf9f-7vxm
Bug-Debian: https://bugs.debian.org/1140431
Applied-Upstream: 1.1.0
Comment: Backport: on 1.0.15 the pre-existing unconditional add_slice_segment_header() call must be removed (upstream moves it into the guarded block); keeping both would double-free every slice header.

Slice headers attached to finished pictures without an active image unit
were retained forever; a crafted NAL sequence can grow memory without
bound during continuous streaming.

Gbp-Pq: Name CVE-2026-49337.patch

6 weeks agoCVE-2026-49295: bound aggregate short-term RPS size
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-49295: bound aggregate short-term RPS size

Origin: upstream, https://github.com/strukturag/libde265/commit/691f3a3c55b3d32478c4a49895dee061a282652b
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-g2rg-wj66-w594
Bug-Debian: https://bugs.debian.org/1140431
Applied-Upstream: 1.1.0

Missing aggregate bound check on predicted reference picture set entries
allows exceeding the 16-entry array, an out-of-bounds array write in
process_reference_picture_set().

Gbp-Pq: Name CVE-2026-49295.patch

6 weeks agoCVE-2026-45383: prevent reading past end of CtbAddrRStoTS[] in WPP images
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-45383: prevent reading past end of CtbAddrRStoTS[] in WPP images

Origin: upstream, https://github.com/strukturag/libde265/commit/d1a2c3b4b751d21f44e8e82220fe9766c9d116ff
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-wg9q-ppqw-6q38
Applied-Upstream: 1.0.19

In the WPP slice decoder ctbAddrRS = ctbRow * ctbsWidth can exceed the
allocated vector size, causing out-of-bounds reads.

Gbp-Pq: Name CVE-2026-45383.patch

6 weeks agoCVE-2026-45382: Heap-buffer-overflow READ in decode_slice_unit_tiles via unvalidated...
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-45382: Heap-buffer-overflow READ in decode_slice_unit_tiles via unvalidated PPS tile geometry

Origin: https://github.com/strukturag/libde265/commit/c33b4f63ae9056b00f34a31874fed55cd0aa29c9
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-hwhx-x2mq-ccr9

From c33b4f63ae9056b00f34a31874fed55cd0aa29c9 Mon Sep 17 00:00:00 2001
From: Dirk Farin <dirk.farin@gmail.com>
Date: Sun, 10 May 2026 19:57:18 +0200
Subject: [PATCH] fix CTB OOB access when pps.sps mismatches active sps
 (GHSA-hwhx-x2mq-ccr9)

Gbp-Pq: Name CVE-2026-45382.patch

6 weeks agoCVE-2024-38949 (Heap Buffer Overflow) and CVE-2024-38950 (crash)
Tobias Frost [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2024-38949 (Heap Buffer Overflow) and CVE-2024-38950 (crash)

Origin: https://github.com/strukturag/libde265/commit/4089de0845e0009e019be4ca5cbebaf2aee0a8ce
Bug: https://github.com/strukturag/libde265/issues/460
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1074416

as the version in bookworm is still using SDL1.2, the resize() function has
been backported for SDL1.2.
The display444as420() does not need backporting, as with SDL1.2 the faulty
pointer arimethic is not needed, SDL has separate buffers.
From 4089de0845e0009e019be4ca5cbebaf2aee0a8ce Mon Sep 17 00:00:00 2001
From: Dirk Farin <dirk.farin@gmail.com>
Date: Sun, 10 May 2026 22:37:53 +0200
Subject: [PATCH] dec265: fix SDL OOB on 4:4:4 streams and mid-stream
 resolution change (closes #460)

Gbp-Pq: Name CVE-2024-38949+CVE-2024-38950.patch

6 weeks agoCVE-2026-33164 + CVE-2026-33165: fix reallocation of metadata array...
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2026-33164 + CVE-2026-33165: fix reallocation of metadata array...

Origin: https://github.com/strukturag/libde265/commit/c7891e412106130b83f8e8ea8b7f907e9449b658
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-653q-9f73-8hvg (CVE-2026-33165)
Bug: https://github.com/strukturag/libde265/security/advisories/GHSA-wqrf-6rf5-v78r (CVE-2026-33164)
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1131468 (CVE-2026-33165)
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1131469 (CVE-2026-33164)

Imported from 1.0.11-0+deb11u4
(cherry picked from commit c7891e412106130b83f8e8ea8b7f907e9449b658)

Gbp-Pq: Name CVE-2026-33164+33165.patch

6 weeks agoCVE-2023-51792: check validity of conformance window parameters
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-51792: check validity of conformance window parameters

Origin: https://github.com/strukturag/libde265/commit/221e767136b8c46c748ae35b79ec9b976b3da301

Imported from 1.0.11-0+deb11u4
(cherry picked from commit 221e767136b8c46c748ae35b79ec9b976b3da301)

Gbp-Pq: Name CVE-2023-51792.patch

6 weeks agoCVE-2023-49468
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-49468

commit 3e822a3ccf88df1380b165d6ce5a00494a27ceeb
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Thu Nov 23 19:11:34 2023 +0100

    fix #432 (undefined IPM)

Gbp-Pq: Name CVE-2023-49468.patch

6 weeks agoCVE-2023-49467
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-49467

commit 7e4faf254bbd2e52b0f216cb987573a2cce97b54
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Thu Nov 23 19:38:34 2023 +0100

    prevent endless loop for #434 input

Gbp-Pq: Name CVE-2023-49467.patch

6 weeks agoCVE-2023-49465
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-49465

commit 1475c7d2f0a6dc35c27e18abc4db9679bfd32568
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Thu Nov 23 19:43:55 2023 +0100

    possible fix for #435

Gbp-Pq: Name CVE-2023-49465.patch

6 weeks agoCVE-2023-47471
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-47471

commit e36b4a1b0bafa53df47514c419d5be3e8916ebc7
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Sat Nov 4 15:20:50 2023 +0100

    null-pointer check in debug output (fixes #426)

Gbp-Pq: Name CVE-2023-47471.patch

6 weeks agoCVE-2023-43887
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-43887

commit 63b596c915977f038eafd7647d1db25488a8c133
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Fri Sep 1 21:18:48 2023 +0200

    fix #418

Gbp-Pq: Name CVE-2023-43887.patch

6 weeks agoCVE-2023-27103
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-27103

commit d6bf73e765b7a23627bfd7a8645c143fd9097995
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Sat Mar 4 10:27:59 2023 +0100

    check for valid slice header index access (fixes #394)

Gbp-Pq: Name CVE-2023-27103.patch

6 weeks agoCVE-2023-27102
Debian Multimedia Maintainers [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
CVE-2023-27102

commit 0b1752abff97cb542941d317a0d18aa50cb199b1
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Sat Mar 4 10:32:43 2023 +0100

    check whether referenced PPS exists (fixes #393)

Gbp-Pq: Name CVE-2023-27102.patch

6 weeks ago[PATCH] Don't update sps if they are only repeated
Tobias Frost [Fri, 13 Jan 2023 11:22:45 +0000 (12:22 +0100)]
[PATCH] Don't update sps if they are only repeated

This is an attempt to improve the mitigations from #365 and #366 and picks up an idea I described at #345:

> One way would be just to look at the pointers of the SPS (fast and easy, but
> may reject more than required), or investigate if the SPS used for the image
> generations are "compatible".

This changes do exactly this: It (very conservativly) checks if the old and new sps have
identical information -- except the reference picture set, which I believe is supposed
to be updated by new sps'). If they are basically identical, the old sps will be
used instead of the new one, (of course, reference image set is updated from the new one)

I'm using standalone operator== and helper functions to avoid changing ABI of the library;
if an ABI bump would be done, of course this should go to the respective classes.

Gbp-Pq: Name recycle_sps_if_possible.patch

6 weeks ago[PATCH] Use the sps from the image
Tobias Frost [Mon, 12 Dec 2022 13:33:40 +0000 (14:33 +0100)]
[PATCH] Use the sps from the image

(as e.g mc_chroma is using the sps to determine
picture properties, like pic_width_in_luma_samples
and pic_height_in_luma_samples, I *think* this is
more correct.

This PR is for discussion. (See #345.)
It makes the failures go away, but that does not mean it's correct :)

The following poc will be stop failing if (only) this
patch is applied:

 - poc2  #336 - CVE-2022-43238
 - poc4  #338 - CVE-2022-43241
 - poc6-1, poc6-2 #340 - CVE-2022-43242
 - poc7-1, poc7-2  #341 - CVE-2022-43239
 - poc8-1 #342 - CVE-2022-43244
 - poc9-3 #343 - CVE-2022-43236
 - poc10-2, poc10-3 #344 - CVE-2022-43237
 - poc16 #350
 - poc19 #353

The following are still failing if only this patch is
applied, but they stop failing if #365 is applied as well, but will
still fail with ONLY #365 applied (IOW, both are needed)

 - poc1  #335 - CVE-2022-43240
 - poc3  #337 - CVE-2022-43235
 - poc5   #339 - CVE-2022-43423
 - poc9-1,poc9-2, poc9-4  #343 - CVE-2022-43236
 - poc14  #348 - CVE-2022-43253
 - poc15  #349 - CVE-2022-43248
 - poc17-1, poc17-2  #351
 - poc18 #352 - CVE-2022-43245

Gbp-Pq: Name use_sps_from_the_image.patch

6 weeks ago[PATCH] Try to mitigate asan failures.
Tobias Frost [Mon, 12 Dec 2022 13:03:12 +0000 (14:03 +0100)]
[PATCH] Try to mitigate asan failures.

See #345 for my analysis and details…

(This PR is just for discussion.)

(The CVE references are obtained from the Debian security tracker,
which links the issues.)

This makes the following POCs stop failing:

- poc3 (#337)
- poc7-1 (#341) CVE-2022-43239 (note: does NOT fix poc7-2)
- poc8-2, poc8-3, poc8-4 (#342) CVE-2022-43244   (note: does NOT fix poc8-1)
- poc11-1, poc11-2 (#345) CVE-2022-43249
- poc12 (#346)
- poc13 (#347) CVE-2022-43252
- poc16 (#350)

Gbp-Pq: Name reject_reference_pics_from_different_sps.patch

6 weeks agoDisable building of some internal tools that no longer link
Joachim Bauch [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
Disable building of some internal tools that no longer link

because internal symbols are no longer exported.

Gbp-Pq: Name disable_tools.patch

6 weeks agoOnly export symbols defined in the decoder API.
Joachim Bauch [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
Only export symbols defined in the decoder API.

The encoder API is not final yet, so upstream exports all symbols to make
development easier. For packaging we only want to expose the public API.

Gbp-Pq: Name only_export_decoder_api.patch

6 weeks agolibde265 (1.0.11-1+deb12u3) bookworm-security; urgency=high
Tobias Frost [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
libde265 (1.0.11-1+deb12u3) bookworm-security; urgency=high

  * Non-maintainer upload by the LTS Team.
  * Backport fixes for:
    - CVE-2023-51792 - Buffer-Overflow
    - CVE-2026-33164 - DoS (crash) (Closes: #1131469)
    - CVE-2026-33165 - heap out-of-bounds write (Closes: #1131468)
    - CVE-2024-38949 - Heap Buffer Overflow (Closes: #1074416)
    - CVE-2024-38950 - Heap Buffer Overflow (same bug/patch as 2024-38949)
    - CVE-2024-45382 - Heap Buffer Read Overflow
    - CVE-2026-45383 - Heap Buffer Read Overflow
    - CVE-2026-49295 - Out-of-bounds write (Closes: #1140431)
    - CVE-2026-49337 - Unbounded memory accumulation (also #1140431)
    - CVE-2026-49346 - Heap buffer overflow (also #1140431)
    - CVE-2026-54240 - Heap Buffer Overflow
    - CVE-2026-54241 - Heap Buffer Overflow
  * Backport security fixes without CVE assigned yet:
    - GHSA-xp3h-6f5r-8cxp - Use after free / double free
      in concurrent execution enviornments (race conditions)
    - GHSA-mm7m-v26f-wf8x - heap-use-after-free

[dgit import unpatched libde265 1.0.11-1+deb12u3]

6 weeks agoImport libde265_1.0.11-1+deb12u3.debian.tar.xz
Tobias Frost [Sun, 20 Sep 2026 11:47:08 +0000 (13:47 +0200)]
Import libde265_1.0.11-1+deb12u3.debian.tar.xz

[dgit import tarball libde265 1.0.11-1+deb12u3 libde265_1.0.11-1+deb12u3.debian.tar.xz]

3 years agoImport libde265_1.0.11.orig.tar.gz
Joachim Bauch [Thu, 2 Feb 2023 15:06:20 +0000 (16:06 +0100)]
Import libde265_1.0.11.orig.tar.gz

[dgit import orig libde265_1.0.11.orig.tar.gz]